
const db = require('../db/index')

// 加密
const bcrypt = require('bcryptjs')

const qs = require('qs')


// 注册
exports.regUser = (req, res) => {
  // 接收表单数据
    const userinfo = req.body
    // 判断数据是否合法
    if (!userinfo.username || !userinfo.password) {
      return res.send({ code: 1, msg: '用户名或密码不能为空！' })
    }
    const sql = `select * from zh_user where userName=?`
    db.query(sql, [userinfo.username],function (err, results) {
      // 执行 SQL 语句失败
      if (err) {
        return res.send({ code: 1, msg: err })
      }
      // 用户名被占用
      if (results.length > 0) {
        return res.send({ code: 1, msg: '用户名被占用，请更换其他用户名！' })
      }
      // TODO: 用户名可用，继续后续流程...
      // 对用户的密码,进行 bcrype 加密，返回值是加密之后的密码字符串
      userinfo.password = bcrypt.hashSync(userinfo.password, 10)
      const sql = 'INSERT INTO zh_user SET ?'
      db.query(sql, { username: userinfo.username, password: userinfo.password }, function (err, results) {
        // 执行 SQL 语句失败
        if (err) return res.send({ code: 1, msg: err })
        // SQL 语句执行成功，但影响行数不为 1
        if (results.affectedRows !== 1) {
          return res.send({ code: 1, msg: '注册用户失败，请稍后再试！' })
        }
        // 注册成功
        res.send({ code: 0, msg: '注册成功！',data:[] })
      })
    })
}

// 登录的处理函数
exports.login = (req, res) => {

  // 接收表单数据
  const userinfo = req.body
  //   res.send({ code: 0, msg: '登录成功' })
  const sql = `select * from zh_user where username=?`  // 查询username
  db.query(sql, userinfo.username, function (err, results) {
    // 执行 SQL 语句失败
    if (err) return res.send({code:1,msg: err})
    // 执行 SQL 语句成功，但是查询到数据条数不等于 1
    if (results.length !== 1) return res.send({code:1,msg: '登录失败'})
    // TODO：判断用户输入的登录密码是否和数据库中的密码一致

    // 拿着用户输入的密码,和数据库中存储的密码进行对比
    const compareResult = bcrypt.compareSync(userinfo.password, results[0].password) // userinfo.password 用户输入的密码results[0].password

    // 如果对比的结果等于 false, 则证明用户输入的密码错误
    if (!compareResult) {
      return res.send({code:1,msg: '密码错误'})
    }
    res.send({ code: 0, msg: '登录成功' })
  })
}


// 修改密码 ;需要id
exports.userUpdate=(req,res)=>{
  // 接收表单数据
  const userinfo = req.body
  let sql = `update zh_user set ? where id = ${userinfo.id}`
  
  const sqlPassword = `select * from zh_user where id=${userinfo.id}` // 根据id查询用户

  // 修改用户密码
  // 查询密码是否相同
  db.query(sqlPassword,function (err1,results1) {
    if(err1) return res.send({code:1,msg:err})

    if(userinfo.username!=results1[0].username) return res.send({code:1,msg:'用户名不可更改'})

    if(userinfo.password==results1[0].password) return res.send({code:1,msg:'两次密码相同！'})
    
    db.query(sql,{password:userinfo.password},function (err,results) {

        if(err) return res.send({code:1,msg:err})
        if(results.affectedRows!=1) return res.send({code:1,msg:'未查询到相关用户/查询失败！'})
        res.send({code: 0, msg: '修改用户成功',data:[]})
      })
  })

}